package 子集;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * @author zhengTao
 * @version 1.0
 * @description: 子集
 * @date 2022/11/15 14:43
 */
public class Demo78 {
     List<List<Integer>> res=new ArrayList<>();
     LinkedList<Integer> path=new LinkedList<>();
     public List<List<Integer>> subsets(int[] nums) {
        backTrack(nums,0);
        return res;

    }

    private void backTrack(int[] nums, int startIndex) {
         if(startIndex>nums.length){
             return;
         }
         //这里得重新new一个，这个也错了好多次了
         res.add(new ArrayList<>(path));
        for (int i = startIndex; i < nums.length; i++) {
            path.add(nums[i]);
            //这里是i 不是startIndex ，错过好多次了
            backTrack(nums, i+1);
            path.removeLast();

        }

    }
}
